package com.itheima.datastructure.linkedlist;

//删除重复节点
public class E04Leetcode83 {
    public ListNode deleteDuplicates(ListNode head){
        if(head==null || head.next==null){
            return head;
        }
        ListNode p1=head;
        ListNode p2;
        while((p2=p1.next)!=null){
            if(p1.val==p2.val){
                p1.next=p2.next;
            }else{
                p1=p1.next;
            }
        }
        return head;
    }

    public ListNode deleteDuplicates2(ListNode p){
        if(p==null || p.next==null){
            return p;
        }
        //如果当前节点与下一个节点相同返回下一个，自己被抛弃
        if(p.val==p.next.val){
            return deleteDuplicates2(p.next);
        }else{
            //如何不相同，保留自己。下一个节点返回已经删除过的
            p.next=deleteDuplicates(p.next);
            return p;
        }
    }
    public static void main(String[] args) {
        ListNode head=ListNode.of(1,1,2,3,3);
        System.out.println(head);
        System.out.println(new E04Leetcode83().deleteDuplicates2(head));
    }
}
